package cn.jly.spring.annotation.ioc.config;

import cn.jly.spring.annotation.ioc.bean.Rainbow;
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
import org.springframework.beans.factory.support.RootBeanDefinition;
import org.springframework.context.annotation.ImportBeanDefinitionRegistrar;
import org.springframework.core.type.AnnotationMetadata;

/**
 * @author lanyangji
 * @description myImportBeanDefinitionRegistrar
 * @date 2020/11/12 下午 2:52
 */
public class MyImportBeanDefinitionRegistrar implements ImportBeanDefinitionRegistrar {
    /**
     * @param importingClassMetadata 当前类的注解信息
     * @param registry bean定义的注册类，把所有需要添加到容器中的bean，可以通过调用registry的方法进行注册
     */
    public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) {
        final boolean b = registry.containsBeanDefinition("rainbow");
        // 如果没有彩虹bean,则注册
        if (!b) {
            // 指定bean的定义信息
            final RootBeanDefinition definition = new RootBeanDefinition(Rainbow.class);
            // 单例
            definition.setScope("singleton");
            // 懒加载
            definition.setLazyInit(true);
            registry.registerBeanDefinition("rainbow", definition);
        }
    }
}
